home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / string / RCS / strerror.c,v < prev    next >
Text File  |  1991-10-01  |  7KB  |  277 lines

  1. head     1.6;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.6.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.6
  10. date     90.06.27.11.16.32;  author shirriff;  state Exp;
  11. branches 1.6.1.1;
  12. next     1.5;
  13.  
  14. 1.5
  15. date     89.03.22.16.06.57;  author rab;  state Exp;
  16. branches ;
  17. next     1.4;
  18.  
  19. 1.4
  20. date     89.03.04.15.46.24;  author ouster;  state Exp;
  21. branches ;
  22. next     1.3;
  23.  
  24. 1.3
  25. date     88.10.28.11.22.27;  author brent;  state Exp;
  26. branches ;
  27. next     1.2;
  28.  
  29. 1.2
  30. date     88.08.15.10.03.11;  author ouster;  state Exp;
  31. branches ;
  32. next     1.1;
  33.  
  34. 1.1
  35. date     88.06.24.18.30.37;  author ouster;  state Exp;
  36. branches ;
  37. next     ;
  38.  
  39. 1.6.1.1
  40. date     91.10.01.17.22.40;  author kupfer;  state Exp;
  41. branches ;
  42. next     ;
  43.  
  44.  
  45. desc
  46. @@
  47.  
  48.  
  49. 1.6
  50. log
  51. @Added EIDRM error.
  52. @
  53. text
  54. @/* 
  55.  * strerror.c --
  56.  *
  57.  *    Source code for the "strerror" library routine.
  58.  *
  59.  * Copyright 1988 Regents of the University of California
  60.  * Permission to use, copy, modify, and distribute this
  61.  * software and its documentation for any purpose and without
  62.  * fee is hereby granted, provided that the above copyright
  63.  * notice appear in all copies.  The University of California
  64.  * makes no representations about the suitability of this
  65.  * software for any purpose.  It is provided "as is" without
  66.  * express or implied warranty.
  67.  */
  68.  
  69. #ifndef lint
  70. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strerror.c,v 1.5 89/03/22 16:06:57 rab Exp Locker: shirriff $ SPRITE (Berkeley)";
  71. #endif /* not lint */
  72.  
  73. #include <stdio.h>
  74. #include <string.h>
  75.  
  76. /*
  77.  * List of known errors:
  78.  */
  79.  
  80. char *sys_errlist[] = {
  81.     "no error (operation succeeded",        /* 0 */
  82.     "not owner",                /* EPERM */
  83.     "no such file or directory",        /* ENOENT */
  84.     "no such process",                /* ESRCH */
  85.     "interrupted system call",            /* EINTR */
  86.     "I/O error",                /* EIO */
  87.     "no such device or address",        /* ENXIO */
  88.     "argument list too long",            /* E2BIG */
  89.     "exec format error",            /* ENOEXEC */
  90.     "bad file number",                /* EBADF */
  91.     "no children",                /* ECHILD */
  92.     "no more processes",            /* EAGAIN */
  93.     "not enough memory",            /* ENOMEM */
  94.     "permission denied",            /* EACCESS */
  95.     "bad address in system call argument",    /* EFAULT */
  96.     "block device required",            /* ENOTBLK */
  97.     "mount device busy",            /* EBUSY */
  98.     "file already exists",            /* EEXIST */
  99.     "cross-domain link",            /* EXDEV */
  100.     "no such device",                /* ENODEV */
  101.     "not a directory",                /* ENOTDIR */
  102.     "illegal operation on a directory",        /* EISDIR */
  103.     "invalid argument",                /* EINVAL */
  104.     "file table overflow",            /* ENFILE */
  105.     "too many open files",            /* EMFILE */
  106.     "inappropriate device for ioctl",        /* ENOTTY */
  107.     "text file or pseudo-device busy",        /* ETXTBSY */
  108.     "file too large",                /* EFBIG */
  109.     "no space left in file system domain",    /* ENOSPC */
  110.     "illegal seek",                /* ESPIPE */
  111.     "read-only file system",            /* EROFS */
  112.     "too many links",                /* EMLINK */
  113.     "broken pipe",                /* EPIPE */
  114.     "math argument out of range",        /* EDOM */
  115.     "math result unrepresentable",        /* ERANGE */
  116.     "operation would block",            /* EWOULDBLOCK */
  117.     "operation now in progress",        /* EINPROGRESS */
  118.     "operation already in progress",        /* EALREADY */
  119.     "socket operation on non-socket",        /* ENOTSOCK */
  120.     "destination address required",        /* EDESTADDRREQ */
  121.     "message too long",                /* EMSGSIZE */
  122.     "protocol wrong type for socket",        /* EPROTOTYPE */
  123.     "bad proocol option",            /* ENOPROTOOPT */
  124.     "protocol not suppored",            /* EPROTONOSUPPORT */
  125.     "socket type not supported",        /* ESOCKTNOSUPPORT */
  126.     "operation not supported on socket",    /* EOPNOTSUPP */
  127.     "protocol family not supported",        /* EPFNOSUPPORT */
  128.     "address family not supported by protocol family",    /* EAFNOSUPPORT */
  129.     "address already in use",            /* EADDRINUSE */
  130.     "can't assign requested address",        /* EADDRNOTAVAIL */
  131.     "network is down",                /* ENETDOWN */
  132.     "network is unreachable",            /* ENETUNREACH */
  133.     "network dropped connection on reset",    /* ENETRESET */
  134.     "software caused connection abort",        /* ECONNABORTED */
  135.     "connection reset by peer",            /* ECONNRESET */
  136.     "no buffer space available",        /* ENOBUFS */
  137.     "socket is already connected",        /* EISCONN */
  138.     "socket is not connected",            /* ENOTCONN */
  139.     "can't send afer socket shutdown",        /* ESHUTDOWN */
  140.     "undefined error (59)",            /* not used */
  141.     "connection timed out",            /* ETIMEDOUT */
  142.     "connection refused",            /* ECONNREFUSED */
  143.     "too many levels of symbolic links",    /* ELOOP */
  144.     "file name too long",            /* ENAMETOOLONG */
  145.     "host is down",                /* EHOSTDOWN */
  146.     "host is unreachable",            /* EHOSTUNREACH */
  147.     "directory not empty",            /* ENOTEMPTY */
  148.     "too many processes",            /* EPROCLIM */
  149.     "too many users",                /* EUSERS */
  150.     "disk quota exceeded",            /* EDQUOT */
  151.     "stale remote file handle",            /* ESTALE */
  152.     "pathname hit remote file system",        /* EREMOTE */
  153.     "undefined error (72)",            /* not used */
  154.     "undefined error (73)",            /* not used */
  155.     "undefined error (74)",            /* not used */
  156.     "undefined error (75)",            /* not used */
  157.     "undefined error (76)",            /* not used */
  158.     "identifier removed",            /* EIDRM */
  159. };
  160. int sys_nerr = sizeof(sys_errlist)/sizeof(char *);
  161.  
  162. /*
  163.  *----------------------------------------------------------------------
  164.  *
  165.  * strerror --
  166.  *
  167.  *    Map an integer error number into a printable string.
  168.  *
  169.  * Results:
  170.  *    The return value is a pointer to a string describing
  171.  *    error.  The first character of string isn't capitalized.
  172.  *
  173.  * Side effects:
  174.  *    Each call to this procedure may overwrite the value returned
  175.  *    by the previous call.
  176.  *
  177.  *----------------------------------------------------------------------
  178.  */
  179.  
  180. char *
  181. strerror(error)
  182.     int error;            /* Integer identifying error (must be
  183.                  * one of the officially-defined Sprite
  184.                  * errors, as defined in errno.h). */
  185. {
  186.     static char defaultMsg[50];
  187.  
  188.     if ((error <= sys_nerr) && (error > 0)) {
  189.     return sys_errlist[error];
  190.     }
  191.     (void) sprintf(defaultMsg, "unknown error (%d)", error);
  192.     return defaultMsg;
  193. }
  194. @
  195.  
  196.  
  197. 1.6.1.1
  198. log
  199. @Initial branch for Sprite server.
  200. @
  201. text
  202. @d17 1
  203. a17 1
  204. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strerror.c,v 1.6 90/06/27 11:16:32 shirriff Exp $ SPRITE (Berkeley)";
  205. @
  206.  
  207.  
  208. 1.5
  209. log
  210. @*** empty log message ***
  211. @
  212. text
  213. @d17 1
  214. a17 1
  215. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strerror.c,v 1.4 89/03/04 15:46:24 ouster Exp Locker: rab $ SPRITE (Berkeley)";
  216. d100 6
  217. @
  218.  
  219.  
  220. 1.4
  221. log
  222. @Changed "text file busy" to include pdevs.
  223. @
  224. text
  225. @d17 2
  226. a18 2
  227. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strerror.c,v 1.3 88/10/28 11:22:27 brent Exp $ SPRITE (Berkeley)";
  228. #endif not lint
  229. d21 1
  230. d129 1
  231. a129 1
  232.     if ((error <= sys_nerr) & (error > 0)) {
  233. @
  234.  
  235.  
  236. 1.3
  237. log
  238. @Added messages for ESTALE and EREMOTE
  239. @
  240. text
  241. @d17 1
  242. a17 1
  243. static char rcsid[] = "$Header: strerror.c,v 1.2 88/08/15 10:03:11 ouster Exp $ SPRITE (Berkeley)";
  244. d53 1
  245. a53 1
  246.     "text file busy",                /* ETXTBSY */
  247. @
  248.  
  249.  
  250. 1.2
  251. log
  252. @Must index error list from 0, not 1.
  253. @
  254. text
  255. @d17 1
  256. a17 1
  257. static char rcsid[] = "$Header: strerror.c,v 1.1 88/06/24 18:30:37 ouster Exp $ SPRITE (Berkeley)";
  258. d96 3
  259. a98 1
  260.     "disk quota exceeded"            /* EDQUOT */
  261. @
  262.  
  263.  
  264. 1.1
  265. log
  266. @Initial revision
  267. @
  268. text
  269. @d17 1
  270. a17 1
  271. static char rcsid[] = "$Header: strstr.c,v 1.1 88/04/25 13:25:55 ouster Exp $ SPRITE (Berkeley)";
  272. d27 1
  273. d127 1
  274. a127 1
  275.     return sys_errlist[error-1];
  276. @
  277.